home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / plaf / basic / BasicTableHeaderUI.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  5.4 KB  |  180 lines

  1. package javax.swing.plaf.basic;
  2.  
  3. import java.awt.Component;
  4. import java.awt.Dimension;
  5. import java.awt.Graphics;
  6. import java.awt.Rectangle;
  7. import java.util.Enumeration;
  8. import javax.swing.CellRendererPane;
  9. import javax.swing.JComponent;
  10. import javax.swing.LookAndFeel;
  11. import javax.swing.event.MouseInputListener;
  12. import javax.swing.plaf.ComponentUI;
  13. import javax.swing.plaf.TableHeaderUI;
  14. import javax.swing.table.JTableHeader;
  15. import javax.swing.table.TableCellRenderer;
  16. import javax.swing.table.TableColumn;
  17. import javax.swing.table.TableColumnModel;
  18.  
  19. public class BasicTableHeaderUI extends TableHeaderUI {
  20.    protected JTableHeader header;
  21.    protected CellRendererPane rendererPane;
  22.    protected MouseInputListener mouseInputListener;
  23.  
  24.    private Dimension createHeaderSize(long var1) {
  25.       TableColumnModel var3 = this.header.getColumnModel();
  26.       var1 += (long)(var3.getColumnMargin() * var3.getColumnCount());
  27.       if (var1 > 2147483647L) {
  28.          var1 = 2147483647L;
  29.       }
  30.  
  31.       return new Dimension((int)var1, this.getHeaderHeight());
  32.    }
  33.  
  34.    protected MouseInputListener createMouseInputListener() {
  35.       return new MouseInputHandler(this);
  36.    }
  37.  
  38.    public static ComponentUI createUI(JComponent var0) {
  39.       return new BasicTableHeaderUI();
  40.    }
  41.  
  42.    private int getHeaderHeight() {
  43.       int var1 = 0;
  44.       TableColumnModel var2 = this.header.getColumnModel();
  45.  
  46.       for(int var3 = 0; var3 < var2.getColumnCount(); ++var3) {
  47.          TableColumn var4 = var2.getColumn(var3);
  48.          TableCellRenderer var5 = var4.getHeaderRenderer();
  49.          Component var6 = var5.getTableCellRendererComponent(this.header.getTable(), var4.getHeaderValue(), false, false, -1, var3);
  50.          var1 = Math.max(var1, var6.getPreferredSize().height);
  51.       }
  52.  
  53.       return var1;
  54.    }
  55.  
  56.    public Dimension getMaximumSize(JComponent var1) {
  57.       long var2 = 0L;
  58.  
  59.       TableColumn var5;
  60.       for(Enumeration var4 = this.header.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getMaxWidth()) {
  61.          var5 = (TableColumn)var4.nextElement();
  62.       }
  63.  
  64.       return this.createHeaderSize(var2);
  65.    }
  66.  
  67.    public Dimension getMinimumSize(JComponent var1) {
  68.       long var2 = 0L;
  69.  
  70.       TableColumn var5;
  71.       for(Enumeration var4 = this.header.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getMinWidth()) {
  72.          var5 = (TableColumn)var4.nextElement();
  73.       }
  74.  
  75.       return this.createHeaderSize(var2);
  76.    }
  77.  
  78.    public Dimension getPreferredSize(JComponent var1) {
  79.       long var2 = 0L;
  80.  
  81.       TableColumn var5;
  82.       for(Enumeration var4 = this.header.getColumnModel().getColumns(); var4.hasMoreElements(); var2 += (long)var5.getPreferredWidth()) {
  83.          var5 = (TableColumn)var4.nextElement();
  84.       }
  85.  
  86.       return this.createHeaderSize(var2);
  87.    }
  88.  
  89.    protected void installDefaults() {
  90.       LookAndFeel.installColorsAndFont(this.header, "TableHeader.background", "TableHeader.foreground", "TableHeader.font");
  91.    }
  92.  
  93.    protected void installKeyboardActions() {
  94.    }
  95.  
  96.    protected void installListeners() {
  97.       this.mouseInputListener = this.createMouseInputListener();
  98.       this.header.addMouseListener(this.mouseInputListener);
  99.       this.header.addMouseMotionListener(this.mouseInputListener);
  100.    }
  101.  
  102.    public void installUI(JComponent var1) {
  103.       this.header = (JTableHeader)var1;
  104.       this.rendererPane = new CellRendererPane();
  105.       this.header.add(this.rendererPane);
  106.       this.installDefaults();
  107.       this.installListeners();
  108.       this.installKeyboardActions();
  109.    }
  110.  
  111.    public void paint(Graphics var1, JComponent var2) {
  112.       Rectangle var3 = var1.getClipBounds();
  113.       if (this.header.getColumnModel() != null) {
  114.          int var4 = 0;
  115.          boolean var5 = false;
  116.          int var6 = -1;
  117.          Rectangle var7 = null;
  118.          Dimension var8 = this.header.getSize();
  119.          Rectangle var9 = new Rectangle(0, 0, var8.width, var8.height);
  120.  
  121.          for(Enumeration var10 = this.header.getColumnModel().getColumns(); var10.hasMoreElements(); ++var4) {
  122.             TableColumn var11 = (TableColumn)var10.nextElement();
  123.             int var12 = this.header.getColumnModel().getColumnMargin();
  124.             var9.width = var11.getWidth() + var12;
  125.             if (var9.intersects(var3)) {
  126.                var5 = true;
  127.                if (var11 != this.header.getDraggedColumn()) {
  128.                   this.paintCell(var1, var9, var4);
  129.                } else {
  130.                   var1.setColor(this.header.getParent().getBackground());
  131.                   var1.fillRect(var9.x, var9.y, var9.width, var9.height);
  132.                   var7 = new Rectangle(var9);
  133.                   var6 = var4;
  134.                }
  135.             } else if (var5) {
  136.                break;
  137.             }
  138.  
  139.             var9.x += var9.width;
  140.          }
  141.  
  142.          TableColumn var13 = this.header.getDraggedColumn();
  143.          if (var13 != null && var7 != null) {
  144.             var7.x += this.header.getDraggedDistance();
  145.             this.paintCell(var1, var7, var6);
  146.          }
  147.  
  148.       }
  149.    }
  150.  
  151.    private void paintCell(Graphics var1, Rectangle var2, int var3) {
  152.       TableColumn var4 = this.header.getColumnModel().getColumn(var3);
  153.       TableCellRenderer var5 = var4.getHeaderRenderer();
  154.       Component var6 = var5.getTableCellRendererComponent(this.header.getTable(), var4.getHeaderValue(), false, false, -1, var3);
  155.       this.rendererPane.add(var6);
  156.       this.rendererPane.paintComponent(var1, var6, this.header, var2.x, var2.y, var2.width, var2.height, true);
  157.    }
  158.  
  159.    protected void uninstallDefaults() {
  160.    }
  161.  
  162.    protected void uninstallKeyboardActions() {
  163.    }
  164.  
  165.    protected void uninstallListeners() {
  166.       this.header.removeMouseListener(this.mouseInputListener);
  167.       this.header.removeMouseMotionListener(this.mouseInputListener);
  168.       this.mouseInputListener = null;
  169.    }
  170.  
  171.    public void uninstallUI(JComponent var1) {
  172.       this.uninstallDefaults();
  173.       this.uninstallListeners();
  174.       this.uninstallKeyboardActions();
  175.       this.header.remove(this.rendererPane);
  176.       this.rendererPane = null;
  177.       this.header = null;
  178.    }
  179. }
  180.